CSG-Graphik

Von Christoph Strunk stammt die Definition einer Reihe von Graphikprimitiven, die ber den \special-Befehl implementiert werden. Der TEX-Befehl \special macht es mglich, Zeichenketten ohne Bearbeitung durch TEX in die -Datei zu schreiben, wo der Gertetreiber sie vorfinden und auswerten kann. Dies ist zwar eine praktische Mglichkeit, um Sachen zu tun, die in TEX selbst schwierig sind (etwa Graphik...), aber \special-Befehle sind mit Vorsicht zu genieen: wenn Sie einen solchen Befehl geben, verlassen Sie sich darauf, da der Gertetreiber ihn auch verstehen kann. Und das ist beileibe nicht garantiert.

Von Christoph Strunks "`CSG-Graphik-\specials"' gibt es zwei Geschmacksrichtungen: die etwas ltere Stufe 1 und die aktuelle Stufe 2. Die Stufe 2 ist zum grten Teil eine Obermenge von Stufe 1. untersttzt die allermeisten Befehle der Stufe 2, lediglich zwei Kommandos wurden nicht implementiert (siehe Tabelle). Hier ist eine Liste der CSG-Befehle der Stufe 2. Fr eine genaue Diskussion verweise ich aus Platzgrnden auf die Dokumentation zu Christoph Strunks TEX-""Implementierung. Alle Befehle beginnen mit der Zeichenfolge "`CS!"'. Der Punkt (x, y) ist die aktuelle Position auf der Druckseite, alle Mae sind in Einheiten der mit CS!u festgelegten "`Einheitslnge"'. Die Koordinatenachsen sind wie in der Mathematik blich angeordnet.

CS!a
dx dy φ α β Ellipsenbogen um (x, y) mit den Halbachsen dx und dy, gedreht um den Winkel φ zur x-Achse, beginnend bei α Grad (relativ zum Ende der Halbachse dx) und endend bei β Grad.
CS!b2
dx0 dy0 dx1 dy1 Quadratische Bézierkurve mit den Kontrollpunkten (x, y), (x + dx0, y + dy0) und (x + dx1, y + dy1).
CS!b3
dx0 dy0 dx1 dy1 dx2 dy2 Kubische Bézierkurve mit den Kontrollpunkten (x, y), (x + dx0, y + dy0), (x + dx1, y + dy1) und (x + dx2, y + dy2).
CS!c
r Kreis mit dem Radius r um den Punkt (x, y).
CS!c0
d Kreis mit dem Durchmesser d um den Punkt (x, y).
CS!d
r Ausgefllter Kreis mit dem Radius r um den Punkt (x, y).
CS!d0
d Ausgefllter Kreis mit dem Durchmesser d um den Punkt (x, y).
CS!e
dx dy Ausgefllte Ellipse um (x, y) mit den Halbachsen dx und dy.
CS!g
f n Bindet die IMG-Graphik n um den (reellen) Faktor f vergrert ein. Die linke untere Ecke der Graphik liegt bei (x, y).
CS!G
f n Entspricht in dem vorigen Befehl. In Christoph Strunks Treibern wird fr Rckwrtskompatibilitt ein anderer Algorithmus verwendet.
CS!i
n Liest die Datei mit dem Namen n ein. n mu weitere CSG-Befehle enthalten; das genaue Format kann hier nicht erlutert werden (siehe Dokumentation zum Strunk-TEX). In der CSG-Stufe 1 sind in einer solchen Datei weitere i-Befehle zulssig. Diese Mglichkeit wurde in der Stufe 2 entfernt; untersttzt dies jedoch weiter.
CS!l
dx dy Zieht eine Linie von (x, y) nach (x + dx, y + dy). Dabei wird der mit CS!t eingestellte Linientyp verwendet.
CS!m
n Bindet das GEM-Metafile n ein. Dieses Kommando wird von nicht untersttzt, da es sich (ohne ein hypermodernes GDOS) nicht sauber realisieren lt.
CS!r
Setzt die Einheitslnge auf 1pt und den Linientyp auf "`durchgezogene Linie"' zurck.
CS!t
t Wahl eines Linientyps. Die Typen sind: 0 – durchgezogene Linie, 1 – lang gestrichelt, 2 – gepunktet, 3 – Strich-Punkt, 4 – kurz gestrichelt, 5 – Strich-Punkt-Punkt, 6 – weit gepunktet
CS!u
l Setzt die Einheitslnge auf l. l kann dabei eine beliebige TEX-""Dimension sein.
CS!w
w Setzt die Linienbreite auf w. Dieser Befehl wird einstweilen ignoriert.
Ursprnglich sollten die CSG-Befehle eine ef"|fiziente Implementierung der auch in LATEX-""picture-""Umgebungen erlaubten Elemente ermglichen. Wie man sieht, sind sie ber dieses Ziel inzwischen hinausgeschossen. Programme wie TEXdraw oder ZPCAD knnen CSG-Befehle erzeugen.